/**
  * @description: 埋点文件
  * @author: lxz
  * @update: lxz(2021-02-01)
  */

// import ajax from '../http'
export default {
  otitle: '',
  olabel: '',
  // 初始化埋点
  initBehavior(autoRecord) {
    // 初始化页面跳转
    window.addEventListener('popstate', (e) => {
      setTimeout(() => {
        this.report('进入页面')
      }, 50)
    })
    // 进入页面
    window.addEventListener('load', () => {
      this.report('进入页面')
    })
    // 离开页面事件
    window.addEventListener('unload', () => {
      this.report('离开页面')
    })
    if (autoRecord) {
      document.body.addEventListener('click', (e) => {
        this.olabel = ''
        this.otitle = ''
        this._findEl(e.target)
      })
    }
  },
  // 查找元素
  _findEl(ele) {
    // 当前节点是否为html节点，就不再往上查找
    if (!ele || ele.tagName === 'HTML') {
      if (this.otitle) {
        this.report(this.otitle)
      }
      return
    }
    // 获取节点 区域名称 和 埋点名称
    const olabel = ele.getAttribute('olabel')
    const otitle = ele.getAttribute('otitle')
    // 赋值
    if (otitle) this.otitle = otitle
    if (olabel) this.olabel = olabel

    if (this.otitle && this.olabel) {
      // 当区域名称和埋点名称都存在了，则上报事件
      this.report(this.otitle, this.olabel)
    } else {
      // 如果还未找齐 区域名称 和 埋点名称，则继续向上查找
      this._findEl(ele.parentNode)
    }
  },
  // 上报
  report(otitle, olabel = document.title) {
    const data = {
      pageUrl: location.href,
      pageTitle: document.title,
      olabel,
      otitle
    }
    console.log(data)
    // ajax.reportBehavior(data)
  }
}
